在刚接触机器学习时候经常弄不清Softmax/Softmax-Loss/Cross Entropy等几个概念,后来阅读caffe源码以后对此比较清楚,刚好整理一下。
softmax
首先softmax是activation函数,可以认为是sigmonid从二分类到多分类的推广,公式如下:
作用是将一列数scale成和为1的概率分布。
cross-entropy
而Cross Entropy则是多分类问题的loss,定义如下
其作用则是定义了分类概率与真实label之间的偏差,预测越准,该偏差越小。
Softmax-Loss
caffe 中SoftmaxWithLossLayer的操作就是就输入的blob进行softmax操作之后,再计算cross-entropy。
很多人可能会奇怪,怎么公式看着不一样?注意,这里的是计算的multi-class的cross-entropy,在caffe里定义为Multinomial Logistic Loss,所以可以认为caffe 中SoftmaxWithLossLayer的等同于softmax+Multinomial Logistic Loss,这里之所以单独写SoftmaxWithLossLayer则是数值稳定性要求的原因,可以参见Numerical Stability。
multi-class的cross-entropy可以根据以下公式计算,也刚好解释其本质就是cross-entropy